<?php
class BaseController extends Zend_Controller_Action
{
	protected $_order = "1";
	protected $_asc   = "0";
	protected $parametrosConsulta = "";
    protected $filter;
    protected $validate;
    protected $auth;
    protected $ajaxRequest;

    function init(){
    	$this->auth = new Zend_Session_Namespace('Zend_Auth');
        $this->initGlobalVariables();
        $this->ajaxRequest = $this->_request->getParam('ajaxRequest');
		$this->montarParametros($this->_request->getPost());
		$this->view->linkVoltar = $this->view->action.$this->parametrosConsulta;    
    }
    
	function initGlobalVariables(){
		$this->initView();
		$this->view->baseUrl  = $this->_request->getBaseUrl();
		$this->view->styleUrl = '/styles';
		$this->view->scriptUrl= '/scripts';
		$this->view->imageUrl = '/images';
		$this->view->linkManual = $this->view->baseUrl.'/manual';
		$this->view->sair =  $this->_request->getBaseUrl() . "/auth/logout";
		$this->view->linkHome = $this->view->baseUrl;
		$this->view->linkVoltar = $this->view->baseUrl;
		$this->view->title = null;
		if (!is_null($this->_getParam('controller'))){
			$this->view->controlador = $this->_getParam('controller');
		}
		if (!is_null($this->_getParam('action'))){
			$this->view->executor = $this->_getParam('action');
		}		
		//Filtros e validadores
		$this->validate  = new Zend_Validate();
		$this->filter    = new Zend_Filter_StripTags();
		//		
		$this->view->infUsuario = $this->auth->nomeUsuario.' - '.$this->auth->nomeFantasiaEmpresa;
    	$this->view->idUsuario  = $this->auth->idUsuario; 	
    	/* Carregar id das paginas que são permitidas o acesso*/
	}    

	private function validateSession(){
		if ($this->nvl($this->auth->idGrupoAcesso, 0) == 0){
    		$this->view->message='Impossível identificar o grupo de acesso.';
    		return false;
		}
	}
	
    public function indexAction(){
    }

	function preDispatch() {
		$auth = Zend_Auth::getInstance();
		$this->validateSession();
		if (!$auth->hasIdentity()) {
			$this->_redirect('/auth/login/');
		} 
		/*else {
			if ($this->ajaxRequest == 0 && $this->_getParam('controller')!='evento'){
				$this->verificaEvento();
			}
		}*/

	}

	protected function montarParametros($matriz){
		for($i=0; $i<count($matriz); $i++){
			$par   =each($matriz);
			$valor = $par[1];
			$indice= $par[0];
			if (($valor!='0') && ($valor!=NULL) && ($indice!='controller') && ($indice!='module') && ($indice!='action')){
				$this->adicionaParametros($indice, $valor);
			}
		}
	}

    protected function adicionaParametros($parametro, $valor){
    	if ($this->parametrosConsulta != "")
    		$this->parametrosConsulta .= "&";
    	else
    		$this->parametrosConsulta = "?";
    	$this->parametrosConsulta .=  $parametro. "=" . $valor;
    }
	
	protected function get_post_action($name)
	{
	    $params = func_get_args();
	    foreach ($params as $name) {
	        if (isset($_POST[$name])) {
	            return $name;
	        }
	    }
	}    
    
	protected function nvl($val, $replace){
		return StringFormat::nvl($val, $replace);
	} 

	protected function verificaEvento(){
		$evento = new Evento();		
		$auth = new Zend_Session_Namespace('Zend_Auth');
		if ($auth->idPerfilAcesso==3 || $evento->eventoStatus()==1){ 
			if ($auth->idPerfilAcesso==3){ //Usuário externo
				$acesso = new AcessoEvento();
				$acesso->loadPessoa($authNamespace->idFisica);
				$evento->load($acesso->id_evento);
			} 
			$auth->idEvento =$evento->id_evento;
			$auth->nmEvento =$evento->nm_evento;
		}else{
			if ($evento->eventoStatus()==2){ //Possui mais de um evento válido selecionar 	
				$redirect='/evento/select';		
			} elseif ($evento->eventoStatus()==3){ //Não possui eventos válidos cadastrados
				$redirect='/evento/add';		
			}
			$this->_redirect($redirect);
		}			
	} 	
	/* validação antes de executar os controllers
	 * if (count(UtilController::getOptionEvento(1))==0){
			$this->view->message="<br>Não existe evento válido cadastrado.";
			$this->_redirect(null);
		}
	 */
}
